package com.sm.controller;

import com.sm.model.Banner;
import com.sm.model.Collect;
import com.sm.model.FirstSort;
import com.sm.model.Goods;
import com.sm.service.BannerService;
import com.sm.service.CollectService;
import com.sm.service.GoodsService;
import com.sm.service.SupermarketHomeService;
import com.sm.util.Msg;
import com.sm.util.PageBean;
import com.sm.util.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;


/**
 *	圆梦超市首页controller
 * @author 60915
 */
@Controller
@RequestMapping("/supermarket")
public class SupermarketHomeController {

	@Autowired
	private SupermarketHomeService supermarketHomeService;
	@Autowired
	private BannerService bannerService;
	@Autowired
	private GoodsService goodsService;
	@Autowired
	private CollectService collectService;



//	/**
//	 *	圆梦超市首页查询所有的一级类别以及其下的所有的二级类别和其下的所有的商品
//	 * @param userId	用户id
//	 * @return
//	 */
//	@RequestMapping("/commodity")
//	@ResponseBody
//	public Msg selectCommodity(Integer userId) {
//
//		//查询所有的轮播图
//		List<Banner> banners = bannerService.selectBannerPic(2);
//
////		//查询圆梦超市中的有学期的一级类别
////		List<FirstSort> firstSortSemesters = supermarketHomeService.selectAllFirstSort();
////		//创建一个集合存放所有的一级类别以及其下的所有的二级类别，以及其下的所有商品。
////		List<AllGoodsVO> allGoodsVOSemesters = new ArrayList<>();
////
////		if(firstSortSemesters != null && firstSortSemesters.size() != 0) {
////			for (FirstSort firstSort : firstSortSemesters) {
////				//查询一级类别下的所有二级类别以及其包含的所有商品。
////				List<SortGoodsVO> sortGoodsVOs = supermarketHomeService.selectGoodsList(firstSort.getFirstSortId());
////				AllGoodsVO allGoodsVO = new AllGoodsVO(firstSort,sortGoodsVOs);
////				allGoodsVOSemesters.add(allGoodsVO);
////			}
////		}
//
//		//查询圆梦超市中的没有学期的一级类别
//		List<FirstSort> firstSorts = supermarketHomeService.selectAllFirstUnder(0);
//		//创建一个集合存放所有的一级类别以及其下的所有的二级类别，以及其下的所有商品。
//		List<AllGoodsVO> allGoodsVOs = new ArrayList<AllGoodsVO>();
//		if(firstSorts != null && firstSorts.size() != 0) {
//			for (FirstSort firstSort : firstSorts) {
//				//查询一级类别下的所有二级类别以及其包含的所有商品。
//				List<SortGoodsVO> sortGoodsVOs = supermarketHomeService.selectGoodsList(firstSort.getFirstSortId());
//				AllGoodsVO allGoodsVO = new AllGoodsVO(firstSort,sortGoodsVOs);
//				allGoodsVOs.add(allGoodsVO);
//			}
//		}
//
//		//购物车中的数量
//		int number = shopCarService.selectShopCarNumber(userId);
//		return Msg.success()./*add("banners", banners).*/add("allGoodsVOs", allGoodsVOs).add("number", number).add("banner", banners);
//	}

//
//	/**
//	 *	圆梦超市首页查询所有的一级类别以及其下的所有的二级类别和其下的所有的商品
//	 * @param term		1上学期 2下学期 0全部
//	 * @return
//	 */
//	@RequestMapping("/getSuperMarketByTerm")
//	@ResponseBody
//	public Msg getSuperMarketByTerm(Integer term, PageBean pageBean) {
//		if (term == null || (term != 1 && term != 2)) {
//			term = 0;
//		}
//		PageResult pageResult = goodsService.listByTerm(term,pageBean.getCurrentPage(),pageBean.getPageSize());
//		//查询圆梦超市中的没有学期的一级类别
////		List<FirstSort> firstSorts = supermarketHomeService.selectAllFirstUnder(term);
////		//创建一个集合存放所有的一级类别以及其下的所有的二级类别，以及其下的所有商品。
////		List<Goods> goodsList = new ArrayList<>();//所有商品
////		if(firstSorts != null && firstSorts.size() != 0) {
////			for (FirstSort firstSort : firstSorts) {
////				//查询一级类别下的所有二级类别以及其包含的所有商品。
////				List<SortGoodsVO> sortGoodsVOs = supermarketHomeService.selectGoodsList(firstSort.getFirstSortId());
////				if(sortGoodsVOs==null) continue;
////				for (SortGoodsVO sortGoodsVO : sortGoodsVOs) {
////					goodsList.addAll(sortGoodsVO.getListGoods());
////				}
////			}
////		}
//		return Msg.success().add("goodsList", pageResult);
//	}



	/**
	 *	查询商品分类和轮播图
	 * @return
	 */
	@RequestMapping("/categoryList")
	@ResponseBody
	public Msg categoryList() {

		//查询所有的轮播图
		List<Banner> banners = bannerService.selectBannerPic(2);

		//所有的分类列表（不带全部）
		List<FirstSort> firstSortList = supermarketHomeService.selectAllFirstSort();

		return Msg.success().add("banners", banners).add("firstSortList", firstSortList);
	}

	/**
	 * 根据分类 上下学期查询商品
	 * @param firstSortId	一级分类ID
	 * @param term		上下学期  -1 全部 0没有学期 1上学期 2下学期
	 * @param pageBean
	 * @return
	 */
	@RequestMapping("/goodsList")
	@ResponseBody
	public Msg goodsList(Integer firstSortId, Integer term, PageBean pageBean) {
		PageResult list = goodsService.listByTerm(firstSortId, term, pageBean.getCurrentPage(), pageBean.getPageSize());
		return Msg.success().add("list", list);
	}



	/**
	 *	查询商品详情。
	 * @param goodsId	商品id
	 * @param userId	用户id
	 * @return
	 */
	@RequestMapping("/selectGoods")
	@ResponseBody
	public Msg selectGoods(Integer goodsId, Integer userId) {
		if(goodsId == null) {
			return Msg.fail().add("msg", "数据异常请重试");
		}

		//查询商品详情
		Goods goods = goodsService.selectByPrimaryKey(goodsId);//通过商品id查询商品

		//通过商品id和用户id查询该商品是否被该用户收藏
		Collect collect = collectService.selectCollectByUserId(goodsId, userId);
		int count = 1;//定义一个这个商品是否被收藏，1是已经收藏了。-1是这个商品没有被当前用户收藏。
		if(collect != null) {
			return Msg.success().add("goods", goods).add("count", count);
		}else {
			count = -1;
			return Msg.success().add("goods", goods).add("count", count);
		}

	}


}





















